var common = {
    utils : {
        hexcase : 0,
        b64pad : '',
        chrsz : 8,
        CHARS : '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
        hex_md5 : function(s){
            var that = this;
            return that.impl.binl2hex(that.core_md5(that.impl.str2binl(s), s.length * common.utils.chrsz));
        },
        b64_md5 : function(s){
            var that = this;
            return that.impl.binl2b64(that.core_md5(that.impl.str2binl(s), s.length * common.utils.chrsz));
        },
        str_md5 : function(s){
            var that = this;
            return that.impl.binl2str(that.core_md5(that.impl.str2binl(s), s.length * common.utils.chrsz));
        },
        hex_hmac_md5 : function(key, data) {
            var that = this;
            return that.impl.binl2hex(that.core_hmac_md5(key, data));
        },
        b64_hmac_md5 : function(key, data) {
            var that = this;
            return that.impl.binl2b64(that.core_hmac_md5(key, data));
        },
        str_hmac_md5 : function(key, data) {
            var that = this;
            return that.impl.binl2str(that.core_hmac_md5(key, data));
        },
        core_md5: function (x, len) {
            x[len >> 5] |= 0x80 << ((len) % 32);
            x[(((len + 64) >>> 9) << 4) + 14] = len;
            var a = 1732584193;
            var b = -271733879;
            var c = -1732584194;
            var d = 271733878;
            var that = this;
            for (var i = 0; i < x.length; i += 16) {
                var olda = a;
                var oldb = b;
                var oldc = c;
                var oldd = d;
                a = that.impl.md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
                d = that.impl.md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
                c = that.impl.md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
                b = that.impl.md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
                a = that.impl.md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
                d = that.impl.md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
                c = that.impl.md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
                b = that.impl.md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
                a = that.impl.md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
                d = that.impl.md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
                c = that.impl.md5_ff(c, d, a, b, x[i + 10], 17, -42063);
                b = that.impl.md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
                a = that.impl.md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
                d = that.impl.md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
                c = that.impl.md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
                b = that.impl.md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
                a = that.impl.md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
                d = that.impl.md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
                c = that.impl.md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
                b = that.impl.md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
                a = that.impl.md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
                d = that.impl.md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
                c = that.impl.md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
                b = that.impl.md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
                a = that.impl.md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
                d = that.impl.md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
                c = that.impl.md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
                b = that.impl.md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
                a = that.impl.md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
                d = that.impl.md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
                c = that.impl.md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
                b = that.impl.md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
                a = that.impl.md5_hh(a, b, c, d, x[i + 5], 4, -378558);
                d = that.impl.md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
                c = that.impl.md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
                b = that.impl.md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
                a = that.impl.md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
                d = that.impl.md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
                c = that.impl.md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
                b = that.impl.md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
                a = that.impl.md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
                d = that.impl.md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
                c = that.impl.md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
                b = that.impl.md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
                a = that.impl.md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
                d = that.impl.md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
                c = that.impl.md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
                b = that.impl.md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
                a = that.impl.md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
                d = that.impl.md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
                c = that.impl.md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
                b = that.impl.md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
                a = that.impl.md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
                d = that.impl.md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
                c = that.impl.md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
                b = that.impl.md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
                a = that.impl.md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
                d = that.impl.md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
                c = that.impl.md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
                b = that.impl.md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
                a = that.impl.md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
                d = that.impl.md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
                c = that.impl.md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
                b = that.impl.md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
                a = that.impl.safe_add(a, olda);
                b = that.impl.safe_add(b, oldb);
                c = that.impl.safe_add(c, oldc);
                d = that.impl.safe_add(d, oldd);
            }
            return Array(a, b, c, d);

        },
        core_hmac_md5: function (key, data) {
            var that = this;
            var bkey = that.impl.str2binl(key);
            if (bkey.length > 16) bkey = that.core_md5(bkey, key.length * common.utils.chrsz);

            var ipad = Array(16), opad = Array(16);
            for (var i = 0; i < 16; i++) {
                ipad[i] = bkey[i] ^ 0x36363636;
                opad[i] = bkey[i] ^ 0x5C5C5C5C;
            }
            var hash = that.core_md5(ipad.concat(that.impl.str2binl(data)), 512 + data.length * common.utils.chrsz);
            return that.core_md5(opad.concat(hash), 512 + 128);
        },
        impl : {
            bit_rol : function(num, cnt){
                return (num << cnt) | (num >>> (32 - cnt));
            },
            str2binl: function (str) {
                var chrsz = common.utils.chrsz;
                var bin = Array();
                var mask = (1 << chrsz) - 1;
                for (var i = 0; i < str.length * chrsz; i += chrsz)
                    bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (i % 32);
                return bin;
            },
            binl2str : function(bin){
                var chrsz = common.utils.chrsz;
                var str = "";
                var mask = (1 << chrsz) - 1;
                for(var i = 0; i < bin.length * 32; i += chrsz)
                    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
                return str;
            },
            binl2hex : function(binarray){
                var hex_tab = common.utils.hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
                var str = "";
                for(var i = 0; i < binarray.length * 4; i++)
                {
                    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
                    hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
                }
                return str;
            },
            binl2b64 : function(binarray){
                var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
                var str = "";
                for(var i = 0; i < binarray.length * 4; i += 3)
                {
                    var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
                        | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
                        |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
                    for(var j = 0; j < 4; j++)
                    {
                        if(i * 8 + j * 6 > binarray.length * 32) str += common.utils.b64pad;
                        else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
                    }
                }
                return str;
            },
            safe_add : function(x, y){
                var lsw = (x & 0xFFFF) + (y & 0xFFFF);
                var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
                return (msw << 16) | (lsw & 0xFFFF);
            },
            md5_cmn : function(q, a, b, x, s, t){
                var that = this;
                return that.safe_add(that.bit_rol(that.safe_add(that.safe_add(a, q), that.safe_add(x, t)), s),b);
            },
            md5_ff : function(a, b, c, d, x, s, t){
                return this.md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
            },
            md5_gg : function(a, b, c, d, x, s, t){
                return this.md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
            },
            md5_hh : function(a, b, c, d, x, s, t){
                return this.md5_cmn(b ^ c ^ d, a, b, x, s, t);
            },
            md5_ii : function(a, b, c, d, x, s, t){
                return this.md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
            }
        },
        urlencode : function(str){
        	return encodeURIComponent(str);
        },
        urldecode : function(str){
        	return decodeURIComponent(str);
        },
        getUrlParams : function(){
            var urlParams = {};
            var urlSearch = location.search;
            if (urlSearch.indexOf("?") == 0){
                var arrSource = urlSearch.substring(1, urlSearch.length).split("&");
                for(var i=0;i < arrSource.length;i++){
                	var arrStr = arrSource[i];
                	var plth = arrStr.indexOf("=");
                	if (plth != -1) {
                		urlParams[arrStr.substring(0, plth)] = decodeURIComponent(arrStr.substring(plth + 1));
                	}
                }
            }
            return urlParams;
        },
        isEmpty : function(obj){
            if(typeof obj === 'undefined' || obj == null || obj == 'undefined' || obj == 'null' || obj == ''){
                return true;
            }
            return false;
        },
        getScrollTop : function(){
            var scrollTop = 0;
            if (document.documentElement && document.documentElement.scrollTop) {
                scrollTop = document.documentElement.scrollTop;
            }
            else if (document.body) {
                scrollTop = document.body.scrollTop;
            }
            return scrollTop;
        },
        getClientHeight: function () {
            var clientHeight = 0;
            if (document.body.clientHeight && document.documentElement.clientHeight) {
                var clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight;
            }
            else {
                var clientHeight = (document.body.clientHeight > document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight;
            }
            return clientHeight;
        },
        getScrollHeight: function () {
            return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
        },
        secondToTimeFormat2 : function(seconds,defaultStr){
            if(this.isEmpty(seconds)){
                return defaultStr || '';
            }
            var minutes  = parseInt(seconds / 60);
            var second = parseInt(seconds-minutes*60);
            minutes = minutes < 10 ? '0'+minutes : minutes;
            second = second < 10 ? '0'+second : second;
            return minutes + ":" + second;
        },
        secondToTimeFormat3 : function(seconds,defaultStr){
            if(this.isEmpty(seconds)){
                return defaultStr || '';
            }
            var hours = parseInt(seconds / (60*60));
            var minutes  = parseInt((seconds-(hours*60*60)) / 60);
            var second = parseInt(seconds-(hours*60*60) - minutes*60);
            minutes = minutes < 10 ? '0'+minutes : minutes;
            second = second < 10 ? '0'+second : second;
            return  hours + ":" + minutes + ":" + second;
        },
        preLoadImg : function(src,callback){
            var img = new Image();
            img.onload = function(){
                callback && callback.call(this);
            };
            img.src = src;
            return this;
        },
        trim : function(str){
            if(!str){
                return '';
            }
            var trimLeft = /^\s+/,
                trimRight = /\s+$/;
            return str.toString().replace(trimLeft,'').replace(trimRight,'');
        },
        trimLeft : function(str){
            if(!str){
                return '';
            }
            var trimLeft = /^\s+/;
            return str.toString().replace(trimLeft,'');
        },
        trimRight : function(str){
            if(!str){
                return '';
            }
            var trimRight = /\s+$/;
            return str.toString().replace(trimRight,'');
        },
        isNumber : function(s){
            var regu = "^[0-9]+$";
            var re = new RegExp(regu);
            if (s.search(re) != -1) {
                return true;
            } else {
                return false;
            }
        }
    },
    browser : {
        versions:function(){
            var u = navigator.userAgent, app = navigator.appVersion;
            return {
                trident: u.indexOf('Trident') > -1, //IE内核
                presto: u.indexOf('Presto') > -1, //opera内核
                webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端
                ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
                iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器
                iPad: u.indexOf('iPad') > -1, //是否iPad
                webApp: u.indexOf('Safari') == -1 //是否web应该程序，没有头部与底部
            };
        }()
    },
    log : {
        type : {
            Info : {type:1,prefix:'MoreTV Web Console Log ~ Info: '},
            Debug : {type:2,prefix:'MoreTV Web Console Log ~ Debug: '},
            Error : {type:3,prefix:'MoreTV Web Console Log ~ Error: '}
        },
        log : function(msg,type,_android){
            var that = this;
            var time = new Date();
            if(!type){
                type = that.type.Info.type;
            }
            switch(type){
                case that.type.Info.type:
                    console.log(common.utils.dateFormat(time,'yyyy-mm-dd hh:mm:ss:ll')+' '+that.type.Info.prefix + msg);
                    if(_android) {
                        try {
                            common.android.log(common.utils.dateFormat(time, 'yyyy-mm-dd hh:mm:ss:ll') + ' Android ' + that.type.Info.prefix + msg);
                        } catch (e) {
                        }
                    }
                    break;
                case that.type.Debug.type:
                    console.log(common.utils.dateFormat(time,'yyyy-mm-dd hh:mm:ss:ll')+' '+that.type.Debug.prefix + msg);
                    if(_android) {
                        try {
                            common.android.log(common.utils.dateFormat(time, 'yyyy-mm-dd hh:mm:ss:ll') + ' Android ' + that.type.Debug.prefix + msg);
                        } catch (e) {
                        }
                    }
                    break;
                case that.type.Error.type:
                    console.log(common.utils.dateFormat(time,'yyyy-mm-dd hh:mm:ss:ll')+' '+that.type.Error.prefix + msg);
                    if(_android) {
                        try {
                            common.android.log(common.utils.dateFormat(time, 'yyyy-mm-dd hh:mm:ss:ll') + ' Android ' + that.type.Error.prefix + msg);
                        } catch (e) {
                        }
                    }
                    break;
            };
        }
    },
    base64: function () {
        var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
        var _utf8_encode = function (string) {
            string = string.replace(/\r\n/g, "\n");
            var utftext = "";
            for (var n = 0; n < string.length; n++) {
                var c = string.charCodeAt(n);
                if (c < 128) {
                    utftext += String.fromCharCode(c);
                } else if ((c > 127) && (c < 2048)) {
                    utftext += String.fromCharCode((c >> 6) | 192);
                    utftext += String.fromCharCode((c & 63) | 128);
                } else {
                    utftext += String.fromCharCode((c >> 12) | 224);
                    utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                    utftext += String.fromCharCode((c & 63) | 128);
                }

            }
            return utftext;
        };
        var _utf8_decode = function (utftext) {
            var string = "";
            var i = 0;
            var c, c1, c2, c3;
            c = c1 = c2 = c3 = 0;
            while (i < utftext.length) {
                c = utftext.charCodeAt(i);
                if (c < 128) {
                    string += String.fromCharCode(c);
                    i++;
                } else if ((c > 191) && (c < 224)) {
                    c2 = utftext.charCodeAt(i + 1);
                    string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                    i += 2;
                } else {
                    c2 = utftext.charCodeAt(i + 1);
                    c3 = utftext.charCodeAt(i + 2);
                    string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                    i += 3;
                }
            }
            return string;
        };
        this.encode = function (input) {
            var output = "";
            var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
            var i = 0;
            input = _utf8_encode(input);
            while (i < input.length) {
                chr1 = input.charCodeAt(i++);
                chr2 = input.charCodeAt(i++);
                chr3 = input.charCodeAt(i++);
                enc1 = chr1 >> 2;
                enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
                enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
                enc4 = chr3 & 63;
                if (isNaN(chr2)) {
                    enc3 = enc4 = 64;
                } else if (isNaN(chr3)) {
                    enc4 = 64;
                }
                output = output +
                _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
                _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
            }
            return output;
        };
        this.decode = function (input) {
            var output = "";
            var chr1, chr2, chr3;
            var enc1, enc2, enc3, enc4;
            var i = 0;
            input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
            while (i < input.length) {
                enc1 = _keyStr.indexOf(input.charAt(i++));
                enc2 = _keyStr.indexOf(input.charAt(i++));
                enc3 = _keyStr.indexOf(input.charAt(i++));
                enc4 = _keyStr.indexOf(input.charAt(i++));
                chr1 = (enc1 << 2) | (enc2 >> 4);
                chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
                chr3 = ((enc3 & 3) << 6) | enc4;
                output = output + String.fromCharCode(chr1);
                if (enc3 != 64) {
                    output = output + String.fromCharCode(chr2);
                }
                if (enc4 != 64) {
                    output = output + String.fromCharCode(chr3);
                }
            }
            output = _utf8_decode(output);
            return output;
        };
    },
    jLink : function(){
        this.active = 0;
        this.link = [];
        this.content = [];
        this.setActive = function (_active) {
            if (!isNaN(_active)) {
                _active = parseInt(_active, 10);
                var _size = this.content.length;
                if (_active < 0) {
                    _active = 0;
                }
                if (_active > _size - 1) {
                    _active = 0;
                }
                this.active = _active;
            }
            return this;
        };
        this.getActive = function () {
            return this.active;
        };
        this.setLink = function (_content) {
            if (Object.prototype.toString.call(_content) === '[object Array]') {
                var _size = _content.length;
                if (_size <= 1) {
                    this.link = [];
                } else {
                    this.link = _content;
                }
                this.active=0;
            }
            return this;
        };
        this.getLink = function () {
            return this.link;
        };
        this.setContent = function (_content) {
            if (Object.prototype.toString.call(_content) === '[object Array]') {
                var _size = _content.length;
                if (_size <= 1) {
                    this.content = [];
                } else {
                    this.content = _content;
                }
                this.active=0;
            }
            return this;
        };
        this.getContent = function () {
            return this.content;
        };
        this.refresh = function(_callback){
            var _active = this.active;
            var _content = this.content;
            var _size = _content.length;
            if(Object.prototype.toString.call(_content) !== '[object Array]' || _size<=2){
                if(_size == 2){
                    if(_active == 0){
                        this.link = [this.content[0],this.content[1]];
                    }else{
                        this.link = [this.content[1],this.content[0]];
                    }
                }else{
                    this.link=[];
                }
            }else{
                //数组长度为奇数
                if(_size%2!=0){
                    var _per_side_num = (_size-1)/2;
                    //当前索引超过数组一半
                    if((_active+_per_side_num)>(_size-1)){
                        var _temp = [];
                        var _start = _per_side_num-(_size-_active-1);
                        for(var x=_start; x<_size; x++){
                            _temp.push(_content[x]);
                        }
                        for(var y=0; y<_start; y++){
                            _temp.push(_content[y]);
                        }
                        this.link = _temp;
                        //当前索引正好在数组一半位置，左右个数正好相等
                    }else if((_active+_per_side_num)==(_size-1)){
                        this.link=this.content;
                        //当前索引未超过数组一半
                    }else{
                        var _temp = [];
                        var _end = _active+_per_side_num+1;
                        for(var x=0; x<_end; x++){
                            _temp.push(_content[x]);
                        }
                        for(var y=_size-1; y>=_end; y--){
                            _temp.unshift(_content[y]);
                        }
                        this.link = _temp;
                    }
                    //数组长度为偶数(默认约定前一半比后一半多一个)
                }else{
                    var _right_side_num = _size/2;
                    var _left_side_num = _right_side_num-1;
                    //当前索引超过数组一半
                    if((_active+_right_side_num)>(_size-1)){
                        var _temp = [];
                        var _start = _right_side_num-(_size-_active-1);
                        for(var x=_start; x<_size; x++){
                            _temp.push(_content[x]);
                        }
                        for(var y=0; y<_start; y++){
                            _temp.push(_content[y]);
                        }
                        this.link = _temp;
                        //当前索引正好在数组一半位置，左右个数正好相等
                    }else if((_active+_right_side_num)==(_size-1)){
                        this.link=this.content;
                        //当前索引未超过数组一半
                    }else{
                        var _temp = [];
                        var _end = _active+_right_side_num+1;
                        for(var x=0; x<_end; x++){
                            _temp.push(_content[x]);
                        }
                        for(var y=_size-1; y>=_end; y--){
                            _temp.unshift(_content[y]);
                        }
                        this.link = _temp;
                    }
                }
            }
            _callback && _callback(this);
            return this;
        }
    }
};